/*
 * 
 *  Este arquivo é parte do software TODO Calculadora. TODO Calculadora é um software livre;
 *  você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU
 *  como publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença,
 *  ou (na sua opnião) qualquer versão.
 *  
 *	Este programa é distribuido na esperança que possa ser útil, mas SEM NENHUMA GARANTIA;
 *  sem uma garantia implícita de ADEQUAÇÂO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
 *  Veja a Licença Pública Geral GNU para maiores detalhes. Você deve ter recebido uma cópia
 *  da Licença Pública Geral GNU junto com este programa, se não, escreva para a Fundação do
 *	Software Livre(FSF)
 *
 *	Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */

package conversores.abstrata;

/**
 * 
 * <p>
 * Classe abstrata que representa o processo de conversão de unidades de Medida.
 * </p>
 * 
 * @author Willyan Guimarães Caetano
 * 
 * @param <ESTRUTURA>
 *            Elemento genérico que será representado por uma estrutura
 *            enumerada que defina a unidade de medida
 * @param <ENTRADA>
 *            Elemento que será o tipo de dados de entrada para realizar o
 *            processo de conversão
 * @param <RESULTADO>
 *            Elemento com o tipo de dados do resultado da conversão
 */
public abstract class AbstractConversor<ESTRUTURA, ENTRADA, RESULTADO> {

	/** Resultado da conversão */
	private RESULTADO resultado;

	public RESULTADO getResultado() {
		return resultado;
	}

	public void setResultado(RESULTADO resultado) {
		this.resultado = resultado;
	}

	/**
	 * 
	 * <p>
	 * Método abstrato que deve ser utilizado nas classes filhas para realizar o
	 * processo de conversão.
	 * </p>
	 * 
	 * @param unidadeEntrada
	 *            Representa o valor da estrutura enumerada do parâmetro
	 *            <b>valorEntrada</b> e que será convertido
	 * @param unidadeSaida
	 *            Representa o valor da estrutura enumerada que deverá ser
	 *            convertido
	 * @param valorEntrada
	 *            Valor a ser convertido
	 */
	public abstract void realizaConversaoMedida(ESTRUTURA unidadeEntrada,
			ESTRUTURA unidadeSaida, ENTRADA valorEntrada);

}
